<!-- 
  map
    映射  
    如果我们想在保持数组个数不变的情况下 根据数组中的每一项经过一定的处理得到新的数组对象
    然后把这个数组返回
    [1,2,3]  针对于当前数组每一项都乘以2得到一个全新的数组
    [{code:1},{code:2}] 针对于当前数组把每一项中的code单独取出来得到一个全新的数组

  filter
    过滤
    当数组中有些项是满足条件的,有些不满足,我们需要筛选出满足条件的所有项组成一个新数组
    [1,2,3,4,5] 找到所有大于2的项然后组成一个新数组
    [{code:1},{code:2},{code:3}] 找到数组中每一项中的code大于2的所有项组成一个新数组
-->

<script>
  // let arr = [1, 2, 3]
  // let newArr = arr.map((item) => {
  //   // 写处理逻辑
  //   return item * 3
  // })

  // let newArr1 = arr.map(item => item * 2)
  // console.log(newArr,newArr1)
  // let arr = [1, 2, 3, 4, 5]
  // const filterArr = arr.filter((item) => {
  //   return item > 2
  // })
  // console.log(filterArr)

  // let arr1 = [{ code: 1 }, { code: 2 }, { code: 3 }]
  // const filterArr1 = arr1.filter(item=>{
  //   return item.code > 2
  // })
  // console.log(filterArr1)

  // function selfFilter(arr, callback) {
  //   let newArr = [] // 最终返回的新数组处理之后的
  //   // 处理逻辑 筛选逻辑
  //   for (let i = 0; i < arr.length; i++) {
  //     // arr[i] 每一项
  //     if(callback(arr[i])){
  //       // 满足条件
  //       newArr.push(arr[i])
  //     }
  //   }
  //   return newArr
  // }

  // let arr = [1, 2, 3, 4, 5]

  // const filterArr = selfFilter(arr, (item) => {
  //   return item > 2
  // })   /// [3,4,5]

  // console.log(filterArr)

  let arr = [1, 2, 3]
  // arr.forEach((item, index) => {
  //   console.log(item, index)
  // })

  function each(arr, callback) {
    for (let i = 0; i < arr.length; i++) {
      callback(arr[i], i)
    }
  }

  each(arr, (item, index) => {
    console.log(item, index)
  }) // 123 012


</script>